package com.zj.controller;

import com.zj.common.Result;
import com.zj.entity.Goods;
import com.zj.entity.UserInfo;
import com.zj.service.GoodsService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * 产品控制器
 *
 * @author zzj
 * @date 2023/02/25
 */
@RestController
@RequestMapping("/goods")
@Slf4j
public class GoodsController {
    @Autowired
    private GoodsService goodsService;

    /**
     * 添加商品
     *
     * @param request 请求
     * @param goods   货物
     * @return {@code Result}
     */
    @PostMapping
    public Result addGoods(HttpServletRequest request, @RequestBody Goods goods){
        UserInfo userInfo = (UserInfo) request.getSession().getAttribute("userInfo");
        goodsService.addGoods(userInfo,goods);
        return Result.success("添加成功");
    }

    /**
     * 查询我的货物
     *
     * @param request 请求
     * @param id      id
     * @return {@code Result<List<Goods>>}
     */
    @GetMapping("/{id}")
    public Result<List<Goods>> getMyGoods(HttpServletRequest request, @PathVariable int id){
        UserInfo userInfo =(UserInfo) request.getSession().getAttribute("userInfo");
        // id = 1 查询所有我的商品（包含 我卖出的，我买入的）
        // id = 2 查询所有我的商品（包含 我买入的）
        //id = 3  查询所有我的商品（包含 我卖出的）
        //id = 4  查询所有我的商品（包含 我尚未卖出的==正在卖的）
        if (id == 1){
            return Result.success(goodsService.getMyGoods(userInfo));
        }else if (id == 2){
            return Result.success(goodsService.getMyBuyGoods(userInfo));
        }else if (id == 3){
            return Result.success(goodsService.getMySellGoods(userInfo));
        }else {
            return Result.success(goodsService.getMySellingGoods(userInfo));
        }
    }

    /**
     * 查询我的货物  通过名称或描述
     *
     * @param request  请求
     * @param queryKey 查询关键
     * @return {@code Result<List<Goods>>}
     */
    @GetMapping
    public Result<List<Goods>> getMyGoodsByNameOrDescription(HttpServletRequest request,@RequestParam String queryKey){
        UserInfo userInfo =(UserInfo) request.getSession().getAttribute("userInfo");
        return Result.success(goodsService.getMyGoodsByNameOrDescription(userInfo,queryKey));
    }

    /**
     * 查询公共产品 通过名字 或 描述 或 用户名
     *
     * @param queryKey 查询关键
     * @return {@code Result<List<Goods>>}
     */
    @GetMapping("/public/")
    public Result<List<Goods>> selectPublicGoodsByNameOrDescriptionOrUserName(@RequestParam String queryKey){
        return Result.success(goodsService.selectPublicGoodsByNameOrDescriptionOrUserName(queryKey));
    }


}
